import request from "@/util/httpUtils";
import { message } from "ant-design-vue";
import router from "@/router";
export default {
    get(url, params) {
        const urlPath = this.api[url];
        const token = sessionStorage.getItem("token") || null;
        const header = token
            ? {
                 Authorization: "Bearer " + token,
                //   token,
              }
            : null;
        return new Promise((resolve,reject)=>{
            request({
                url: urlPath,
                method: "get",
                headers: header,
                params,
            }).then(res=>{
                if(res.code == 403){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    router.push("/login");
                }else if(res.code == 2130){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    message.warning({content:"登录超时，请重新登录",key:'timeout'});
                    router.push("/login");
                }else{
                    if(res.code == 0){
                        resolve(res);
                    }else{
                        message.warning(res.errors);
                        reject(res);
                    }
                    if(sessionStorage.getItem("token")){
                        const refreshTime = sessionStorage.getItem("refreshTime");
                        const now = new Date().getTime();
						const refreshTokenTime = parseInt(process.env.VUE_APP_REFTOKENTIME)*1000;
                        if(now - refreshTime > refreshTokenTime){
                            sessionStorage.setItem("refreshTime",now);
                            this.refreshToken().then(res=>{
                                sessionStorage.setItem("token", res.data.loginToken);
                            });
                        }
                    }
                }
            }).catch((error)=>{
                if(error.response.data&&error.response.data.errors){
                    message.warning(error.response.data.errors);
                }else{
                    message.warning("接口请求异常");
                }
            });
        })
    },
    post(url, data) {
        const urlPath = this.api[url];
        const token = sessionStorage.getItem("token") || null;
        const header = 
         {
              Authorization: "Bearer " + token,
            // token,
        };
        return new Promise((resolve,reject)=>{
            request({
                url: urlPath,
                method: "post",
                headers: header,
                data,
            }).then(res=>{
                if(res.code == 403){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    router.push("/login");
                }else if(res.code == 2130){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    message.warning({content:"登录超时，请重新登录",key:'timeout'});
                    router.push("/login");
                }else{
                    if(res.code == 0){
                        resolve(res);
                    }else{
                        message.warning(res.errors);
                        reject(res);
                    }
                    if(sessionStorage.getItem("token")){
                        const refreshTime = sessionStorage.getItem("refreshTime");
                        const now = new Date().getTime();
                        if(now - refreshTime > 60*1000*5){
                            sessionStorage.setItem("refreshTime",now);
                            this.refreshToken().then(res=>{
                                sessionStorage.setItem("token", res.data.loginToken);
                            });
                        }
                    }
                }
            }).catch((error)=>{
                if(error.response.data&&error.response.data.errors){
                    message.warning(error.response.data.errors);
                }else{
                    message.warning("接口请求异常");
                }
            });
        })
    },
    refreshToken(){
        const token = sessionStorage.getItem("token") || null;
        const header = 
         {
              Authorization: "Bearer " + token,
        };
        return new Promise((resolve,reject)=>{
            request({
                url: this.api['refreshToken'],
                method: "post",
                headers: header,
            }).then(res=>{
                if(res.code == 0){
                    resolve(res);
                }else{
                    message.warning(res.errors);
                    reject(res);
                }
            }).catch((error)=>{
                if(error.response.data&&error.response.data.errors){
                    message.warning(error.response.data.errors);
                }else{
                    message.warning("更新token失败");
                }
            });
        })
    },
    uploadFileByFormData(data) {
        const token = sessionStorage.getItem("token") || null;
        const header = {
            //   Authorization: "Bearer " + token,
            token,
            "Content-Type": "multipart/form-data",
        };
        const formdata = new FormData();
        formdata.append("file", data);
		return new Promise((resolve,reject)=>{
			request({
				url: this.api["uploadFile"],
				method: "post",
				headers: header,
				data: formdata,
			}).then(res=>{
				if(res.code == 403){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    router.push("/login");
                }else if(res.code == 2130){
                    sessionStorage.removeItem('token');
                    sessionStorage.removeItem('user');
                    message.warning({content:"登录超时，请重新登录",key:'timeout'});
                    router.push("/login");
                }else{
                    if(res.code == 0){
                        resolve(res);
                    }else{
                        message.warning(res.errors);
                        reject(res);
                    }
                    if(sessionStorage.getItem("token")){
                        const refreshTime = sessionStorage.getItem("refreshTime");
                        const now = new Date().getTime();
                        if(now - refreshTime > 60*1000*5){
                            sessionStorage.setItem("refreshTime",now);
                            this.refreshToken().then(res=>{
                                sessionStorage.setItem("token", res.data.loginToken);
                            });
                        }
                    }
                }
			}).catch((error)=>{
				if(error.response.data&&error.response.data.errors){
                    message.warning(error.response.data.errors);
                }else{
                    message.warning("接口请求异常");
                }
			})
		});
    },
    api: {
        'captcha': "/Admin/Api/captcha",
        'login': "/Admin/Api/login",
        'logout': "/Admin/Api/loginOut",
        'refreshToken': "/Admin/Api/refreshToken",
        'init': "/Admin/Api/init",

        //角色管理
        'getManagerRoleList': "/Admin/Api/getManagerRoleList",
        'checkedManagerRoles': "/Admin/Api/checkedManagerRoles",
        'getManagerRoleOptions': "/Admin/Api/getManagerRoleOptions",
        'createManagerRole': "/Admin/Api/createManagerRole",
        'editManagerRole': "/Admin/Api/editManagerRole",
        'deleteManagerRole': "/Admin/Api/deleteManagerRole",
        //管理员管理
        'createManagerUser': "/Admin/Api/createManagerUser",
        'editManagerUser': "/Admin/Api/editManagerUser",
        'getGroupInfoByGroupId': "/Admin/Api/editManagerUser",
        'deleteManagerUser': "/Admin/Api/deleteManagerUser",
        'getManagerUserList': "/Admin/Api/getManagerUserList",
        'getManagerUserDetail': "/Admin/Api/getManagerUserDetail",
		//菜单管理
        'createManagerPagePath': "/Admin/Api/createManagerPagePath",
        'editManagerPagePath': "/Admin/Api/editManagerPagePath",
        'deleteManagerPagePath': "/Admin/Api/deleteManagerPagePath",
        'getManagerPagePaths': "/Admin/Api/getManagerPagePaths",
        //公共接口
        'uploadFile': "/Admin/Api/uploadFile",
        '更新二次验证密钥': "/Admin/Api/refreshOtpAuth",
        '二次登录验证': "/Admin/Api/loginByOtpAuth",
        '当前用户详情': "/Api/getUserDetail",
        
        //网站信息
        '获取网站环境': "/Admin/Api/getSiteEnv",
        '编辑网站环境': "/Admin/Api/editSiteEnv",
        '创建主页导航栏': "/Admin/Api/createHomeNavbar",
        '编辑主页导航栏': "/Admin/Api/editHomeNavbar",
        '删除主页导航栏': "/Admin/Api/deleteHomeNavbar",
        '主页导航栏详情': "/Admin/Api/getHomeNavbarDetail",
        '获取主页导航栏列表': "/Admin/Api/getHomeNavbarList",
        //设备密码
        '创建设备密码': "/Admin/Api/createDevicePassword",
        '编辑设备密码': "/Admin/Api/editDevicePassword",
        '删除设备密码': "/Admin/Api/deleteDevicePassword",
        '获取设备密码详情': "/Admin/Api/getDevicePasswordDetail",
        '获取设备密码列表': "/Admin/Api/getDevicePasswordList",
        '设备密码批量导入': "/Admin/Api/importDevicePasswords",
        //在线工具
        '获取在线工具分类集合(用于选择框)': "/Admin/Api/getOnlineToolCates",
        '创建在线工具分类': "/Admin/Api/createOnlineToolCate",
        '编辑在线工具分类': "/Admin/Api/editOnlineToolCate",
        '删除在线工具分类': "/Admin/Api/deleteOnlineToolCate",
        '获取在线工具分类详情': "/Admin/Api/getOnlineToolCateDetail",
        '获取在线工具分类列表': "/Admin/Api/getOnlineToolCateList",
        '创建在线工具': "/Admin/Api/createOnlineTool",
        '编辑在线工具': "/Admin/Api/editOnlineTool",
        '删除在线工具': "/Admin/Api/deleteOnlineTool",
        '获取在线工具详情': "/Admin/Api/getOnlineToolDetail",
        '获取在线工具列表': "/Admin/Api/getOnlineToolList",
        '在线工具批量导入': "/Admin/Api/importOnlineTools",
        //工具列表
        '获取工具分类集合(用于选择框)': "/Admin/Api/getToolCates",
        '创建工具分类': "/Admin/Api/createToolCate",
        '编辑工具分类': "/Admin/Api/editToolCate",
        '删除工具分类': "/Admin/Api/deleteToolCate",
        '获取工具分类详情': "/Admin/Api/getToolCateDetail",
        '获取工具分类列表': "/Admin/Api/getToolCateList",
        '创建工具': "/Admin/Api/createTool",
        '编辑工具': "/Admin/Api/editTool",
        '删除工具': "/Admin/Api/deleteTool",
        '获取工具详情': "/Admin/Api/getToolDetail",
        '获取工具列表': "/Admin/Api/getToolList",
        '工具批量导入': "/Admin/Api/importTools",
		//资源链接
        '获取资源连接分类集合(用于选择框)': "/Admin/Api/getResourceLinkCates",
        '创建资源连接分类': "/Admin/Api/createResourceLinkCate",
        '编辑资源连接分类': "/Admin/Api/editResourceLinkCate",
        '删除资源连接分类': "/Admin/Api/deleteResourceLinkCate",
        '获取资源连接分类详情': "/Admin/Api/getResourceLinkCateDetail",
		'获取资源连接分类列表': "/Admin/Api/getResourceLinkCateList",
		'创建资源连接': "/Admin/Api/createResourceLink",
		'编辑资源连接': "/Admin/Api/editResourceLink",
		'删除资源连接': "/Admin/Api/deleteResourceLink",
		'获取资源连接详情': "/Admin/Api/getResourceLinkDetail",
		'获取资源连接列表': "/Admin/Api/getResourceLinkList",
        '资源链接批量导入': "/Admin/Api/importResourceLinks",
		//文章分类
		'获取文章分类集合': "/Admin/Api/getArticleCates",
		'创建文章分类': "/Admin/Api/createArticleCate",
		'编辑文章分类': "/Admin/Api/editArticleCate",
		'删除文章分类': "/Admin/Api/deleteArticleCate",
		'获取文章分类列表': "/Admin/Api/getArticleCateList",
		'获取漏洞文章列表': "/Admin/Api/getVulnArticleList",
		'获取漏洞文章详情': "/Admin/Api/getVulnArticleDetail",
		'创建漏洞文章': "/Admin/Api/createVulnArticle",
		'编辑漏洞文章': "/Admin/Api/editVulnArticle",
		'删除漏洞文章': "/Admin/Api/deleteVulnArticle",
		'获取技术文章列表': "/Admin/Api/getTechArticleList",
		'获取技术文章详情': "/Admin/Api/getTechArticleDetail",
		'创建技术文章': "/Admin/Api/createTechArticle",
		'编辑技术文章': "/Admin/Api/editTechArticle",
		'删除技术文章': "/Admin/Api/deleteTechArticle",
		'获取漏洞文章评论列表': "/Admin/Api/getVulnArticleCommentList",
		'删除漏洞文章评论': "/Admin/Api/deleteVulnArticleComment",
		'获取技术文章评论列表': "/Admin/Api/getTechArticleCommentList",
		'删除技术文章评论': "/Admin/Api/deleteTechArticleComment",
		
		//用户管理
		'创建用户': "/Admin/Api/createUser",
		'编辑用户': "/Admin/Api/editUser",
		'删除用户': "/Admin/Api/deleteUser",
		'获取用户列表': "/Admin/Api/getUserList",
		'获取用户详情': "/Admin/Api/getUserDetail",
		'获取当前登录管理员详情': "/Admin/Api/getManagerOwnDetail",
		'开启关闭二次验证': "/Admin/Api/setOtpStatus",

		//二期新增
		'评论审核列表': "/Admin/Api/getArticleCommentListByAudit",
		'审核评论': "/Admin/Api/auditArticleComment",
		'获取文章审核列表': "/Admin/Api/getArticleListByAudit",
		'获取文章审核详情': "/Admin/Api/getArticleDetailByAudit",
		'审核文章': "/Admin/Api/auditArticle",
		'创建邀请码': "/Admin/Api/createInviteCode",
		'获取邀请码详情': "/Admin/Api/getInviteCodeDetail",
		'获取邀请码列表': "/Admin/Api/getInviteCodeList",
		'创建首页Banner': "/Admin/Api/createSiteBanner",
		'编辑首页Banner': "/Admin/Api/editSiteBanner",
		'删除首页Banner': "/Admin/Api/deleteSiteBanner",
		'启用首页Banner': "/Admin/Api/diposeStatusSiteBanner",
		'获取首页Banner详情': "/Admin/Api/getSiteBannerDetail",
		'获取首页Banner列表': "/Admin/Api/getSiteBannerList",
    },
    getCookie(name){
        for (var s of document.cookie.split(";")) {
          let arr = s.split("=");
          if(arr[0].trim() == name){
            return arr[1];
          }
        }
        return "";
    }
};
